Load balancing is used to distribute workloads across hosts in a cluster, based on various metrics, such as processor utilization, system memory (random access memory) utilization, storage activity (e.g., read and write operations performed against persistent storage of a host machine), network activity (e.g., packet transmission/reception rates, network throughput), and so on. A resource scheduler examines these metrics measured at the individual hosts in the cluster to identify load balancing opportunities.
Resource schedulers generally use standard deviation of resource utilization among multiple hosts in the cluster as a trigger for performing load balancing. In some cases, however, the standard deviation approach may not be sufficient to identify all of the load balancing opportunities. For example, where there are a small number of outliers in the cluster (e.g., hosts having a very high resource utilization relative to the average), load balancing opportunities for such outliers may be missed because the standard deviation may still be below the threshold required to trigger load balancing. As a result, the high resource utilization state in the outliers will continue to exist so long as the standard deviation is below the threshold.